登录 白背景

794. 有效的井字游戏

https://leetcode-cn.com/problems/valid-tic-tac-toe-state/

  • 提交时间:2021-12-09 14:24:35
  • 执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
  • 内存消耗:1.9 MB, 在所有 Go 提交中击败了56.25%的用户
  • 通过测试用例:109 / 109
func validTicTacToe(board []string) bool {
    pointCount := make(map[string]int, 3)

    for i := 0; i < 3; i++ {
        for o := 0; o < 3; o++ {
            pointCount[string(board[i][o])]++
        }
    }
    // fmt.Printf("pointCount:%+v\n", pointCount)
    cha := pointCount["X"] - pointCount["O"]
    //个数不支持
    if cha != 0 && cha != 1 {
        return false
    }
    if win(board, 'X') && win(board, 'O') {
        return false
    }
    if cha == 0 && win(board, 'X') {
        return false
    }
    if cha == 1 && win(board, 'O') {
        return false
    }
    return true
}

func win(board []string, b byte) bool {
    for i := 0; i < 3; i++ {
        //判断横竖
        if board[i][0] == b && board[i][1] == b && board[i][2] == b {
            return true
        }
        if board[0][i] == b && board[1][i] == b && board[2][i] == b {
            return true
        }
    }
    if board[0][0] == b && board[1][1] == b && board[2][2] == b {
        return true
    }
    if board[0][2] == b && board[1][1] == b && board[2][0] == b {
        return true
    }
    return false
}